[INFO] cloning repository https://github.com/Valtis/RustNes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Valtis/RustNes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 836905877e12c5859cfc82be0fd03dc7beb0b771
[INFO] checking Valtis/RustNes against master#e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682 for beta-170-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FValtis%2FRustNes" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/Valtis/RustNes on toolchain e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/Valtis/RustNes
[INFO] finished tweaking git repo https://github.com/Valtis/RustNes
[INFO] tweaked toml for git repo https://github.com/Valtis/RustNes written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/Valtis/RustNes already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 84fda3a2c3d782c432ebfc8be76945648aa960ef1f64e551edf2abea48d30875
[INFO] running `Command { std: "docker" "start" "-a" "84fda3a2c3d782c432ebfc8be76945648aa960ef1f64e551edf2abea48d30875", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "84fda3a2c3d782c432ebfc8be76945648aa960ef1f64e551edf2abea48d30875", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "84fda3a2c3d782c432ebfc8be76945648aa960ef1f64e551edf2abea48d30875", kill_on_drop: false }`
[INFO] [stdout] 84fda3a2c3d782c432ebfc8be76945648aa960ef1f64e551edf2abea48d30875
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+e6e4f7ed1589e03bc2f6c5931c1a72e7947e8682" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 86541387c0333fe2027e0799807e0b66666f01754beed3d19fd986731b122bf1
[INFO] running `Command { std: "docker" "start" "-a" "86541387c0333fe2027e0799807e0b66666f01754beed3d19fd986731b122bf1", kill_on_drop: false }`
[INFO] [stderr]     Checking num-traits v0.1.37
[INFO] [stderr]     Checking libc v0.2.23
[INFO] [stderr]    Compiling sdl2-sys v0.30.0
[INFO] [stderr]     Checking bitflags v0.7.0
[INFO] [stderr]     Checking lazy_static v0.2.8
[INFO] [stderr]     Checking rand v0.3.15
[INFO] [stderr]     Checking time v0.1.37
[INFO] [stderr]     Checking num-integer v0.1.34
[INFO] [stderr]     Checking num-iter v0.1.33
[INFO] [stderr]     Checking num v0.1.37
[INFO] [stderr]     Checking sdl2 v0.30.0
[INFO] [stderr]     Checking nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stdout]  --> src/console/mod.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/console/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                                  ^                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 63 -             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout] 63 +             let volume_envelope_divider_period = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stdout]    |                               ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 76 -             let shift_count = (0b0000_0111 & value);
[INFO] [stdout] 76 +             let shift_count = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 89 -             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout] 89 +             let timer_high_bits = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout]    |                                  ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 33 -             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout] 33 +             let counter_reload = 0b0111_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout] 43 +             let timer_high_bits = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                         ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 38 -             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout] 38 +             let volume_divider_period = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:50:30
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stdout]    |                              ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 50 -             let rate_index = (0b0000_1111 & value);
[INFO] [stdout] 50 +             let rate_index = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout]    |                         ^                                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 93 -             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout] 93 +             let bit_1 = 0b0000_0000_0000_0001 & self.shift_register;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout]     |                                        ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout] 186 +             self.output.output_level = 0b0111_1111 & value;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::envelope::Envelope`
[INFO] [stdout]   --> src/apu/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use self::envelope::Envelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sweep::Sweep`
[INFO] [stdout]   --> src/apu/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use self::sweep::Sweep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/apu/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/mod.rs:285:13
[INFO] [stdout]     |
[INFO] [stdout] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout]     |             ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 285 -             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout] 285 +             (cpu_frequency*1000_000.0) / sample_rate as f64;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/ppu/renderer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ppu/renderer.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/ppu/renderer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |             for y in (0..240) {
[INFO] [stdout]    |                      ^      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 56 -             for y in (0..240) {
[INFO] [stdout] 56 +             for y in 0..240 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:57:27
[INFO] [stdout]    |
[INFO] [stdout] 57 |                  for x in (0..256) {
[INFO] [stdout]    |                           ^      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -                  for x in (0..256) {
[INFO] [stdout] 57 +                  for x in 0..256 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/ppu/mod.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stdout]    |                                   ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<dyn Memory + 'a>>>>,
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:162:22
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stdout]     |                      ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<dyn Audio<f32>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<dyn Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/ppu/vram.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]   |                         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]   |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<Memory>,
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<dyn Memory>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<dyn Renderer + 'a>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<Memory>,
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<dyn Memory>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:261:33
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<dyn Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:370:54
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<dyn Memory + 'a>>>) {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<dyn Memory + 'a>>>) {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:48:61
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<dyn Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<dyn Renderer + 'a>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<dyn Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/vram.rs:15:58
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<dyn Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/memory/mod.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for Memory {
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for dyn Memory {
[INFO] [stdout]   |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:64:36
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/console/mod.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<dyn Memory>));
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/console/mod.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<Memory>));
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<dyn Memory>));
[INFO] [stdout]     |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:70:46
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<dyn Memory>,
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/console/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `consumed_time`
[INFO] [stdout]    --> src/console/mod.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer_low_bits`
[INFO] [stdout]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let timer_low_bits = value;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioCallback`, `AudioDevice`
[INFO] [stdout]  --> src/console/mod.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use self::sdl2::audio::{AudioCallback, AudioSpecDesired, AudioDevice, AudioQueue};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^                    ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/console/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:63:50
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                                  ^                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 63 -             let volume_envelope_divider_period = (0b0000_1111 & value);
[INFO] [stdout] 63 +             let volume_envelope_divider_period = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:76:31
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let shift_count = (0b0000_0111 & value);
[INFO] [stdout]    |                               ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 76 -             let shift_count = (0b0000_0111 & value);
[INFO] [stdout] 76 +             let shift_count = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/pulse_channel.rs:89:35
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 89 -             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout] 89 +             let timer_high_bits = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout]    |                                  ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 33 -             let counter_reload = (0b0111_1111 & value);
[INFO] [stdout] 33 +             let counter_reload = 0b0111_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/triangle_channel.rs:43:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout]    |                                   ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             let timer_high_bits = (0b0000_0111 & value);
[INFO] [stdout] 43 +             let timer_high_bits = 0b0000_0111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:38:41
[INFO] [stdout]    |
[INFO] [stdout] 38 |             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout]    |                                         ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 38 -             let volume_divider_period = (0b0000_1111 & value);
[INFO] [stdout] 38 +             let volume_divider_period = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:50:30
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let rate_index = (0b0000_1111 & value);
[INFO] [stdout]    |                              ^                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 50 -             let rate_index = (0b0000_1111 & value);
[INFO] [stdout] 50 +             let rate_index = 0b0000_1111 & value;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/apu/noise_channel.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout]    |                         ^                                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 93 -             let bit_1 = (0b0000_0000_0000_0001 & self.shift_register);
[INFO] [stdout] 93 +             let bit_1 = 0b0000_0000_0000_0001 & self.shift_register;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/dmc_channel.rs:186:40
[INFO] [stdout]     |
[INFO] [stdout] 186 |             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout]     |                                        ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -             self.output.output_level = (0b0111_1111 & value);
[INFO] [stdout] 186 +             self.output.output_level = 0b0111_1111 & value;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/apu/sweep.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::envelope::Envelope`
[INFO] [stdout]   --> src/apu/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use self::envelope::Envelope;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::sweep::Sweep`
[INFO] [stdout]   --> src/apu/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use self::sweep::Sweep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]   --> src/apu/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::collections::VecDeque;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/apu/mod.rs:285:13
[INFO] [stdout]     |
[INFO] [stdout] 285 |             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout]     |             ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 285 -             ((cpu_frequency*1000_000.0) / sample_rate as f64);
[INFO] [stdout] 285 +             (cpu_frequency*1000_000.0) / sample_rate as f64;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_buf`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:43
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stdout]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/apu/sweep.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut sweep = (base >> self.shift) as i16;
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/ppu/renderer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ppu/renderer.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/ppu/renderer.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:56:22
[INFO] [stdout]    |
[INFO] [stdout] 56 |             for y in (0..240) {
[INFO] [stdout]    |                      ^      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 56 -             for y in (0..240) {
[INFO] [stdout] 56 +             for y in 0..240 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/ppu/renderer.rs:57:27
[INFO] [stdout]    |
[INFO] [stdout] 57 |                  for x in (0..256) {
[INFO] [stdout]    |                           ^      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -                  for x in (0..256) {
[INFO] [stdout] 57 +                  for x in 0..256 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/ppu/mod.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         try!(write!(f, "{:?}", self.registers));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rom::*`
[INFO] [stdout]    --> src/ppu/mod.rs:788:9
[INFO] [stdout]     |
[INFO] [stdout] 788 |     use rom::*;
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::*`
[INFO] [stdout]   --> src/memory_bus/mod.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |     use memory::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ppu::*`
[INFO] [stdout]   --> src/memory_bus/mod.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     use ppu::*;
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AudioQueue`
[INFO] [stdout]   --> src/memory_bus/mod.rs:92:29
[INFO] [stdout]    |
[INFO] [stdout] 92 |     use self::sdl2::audio::{AudioQueue};
[INFO] [stdout]    |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `memory::*`
[INFO] [stdout]   --> src/ram/mod.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     use memory::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2132:13
[INFO] [stdout]      |
[INFO] [stdout] 2132 |         let mut divisor:u8;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2133:13
[INFO] [stdout]      |
[INFO] [stdout] 2133 |         let mut color_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2134:13
[INFO] [stdout]      |
[INFO] [stdout] 2134 |         let mut master_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAL_RATE` is never used
[INFO] [stdout]   --> src/apu/noise_channel.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static PAL_RATE: [u16; 16] = [
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAL_RATE` is never used
[INFO] [stdout]   --> src/apu/dmc_channel.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static PAL_RATE : [u16; 16] = [
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `halted` and `enabled` are never used
[INFO] [stdout]   --> src/apu/length_counter.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl LengthCounter {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn halted(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `color_subcarrier_frequency`, `master_clock_frequency`, and `clock_divisor` are never read
[INFO] [stdout]     --> src/cpu/mod.rs:2122:5
[INFO] [stdout]      |
[INFO] [stdout] 2121 | pub struct Frequency {
[INFO] [stdout]      |            --------- fields in this struct
[INFO] [stdout] 2122 |     color_subcarrier_frequency: f64,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 2123 |     master_clock_frequency: f64,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 2124 |     clock_divisor: u8,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Frequency` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `oam_dma` is never read
[INFO] [stdout]    --> src/ppu/mod.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 762 | struct Registers {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 767 |     oam_dma: u8,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Registers` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/ppu/renderer.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let _ = self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/apu/dmc_channel.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<Memory + 'a>>>>,
[INFO] [stdout]    |                                   ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     memory: Option<Rc<RefCell<Box<dyn Memory + 'a>>>>,
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:162:22
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<Audio<f32>>,
[INFO] [stdout]     |                      ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 162 |     audio_queue: Box<dyn Audio<f32>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     memory: Rc<RefCell<Box<dyn Memory +'a>>>, // reference to memory, so that cpu can use it
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/ppu/vram.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]   |                         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |     rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]   |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<Memory>,
[INFO] [stdout]    |               ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |     vram: Box<dyn Memory>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/mod.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<Renderer + 'a>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     renderer: Box<dyn Renderer + 'a>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:10:25
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<Memory>,
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     ram: Box<dyn Memory>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:261:33
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn new(audio_queue: Box<dyn Audio<f32>>) -> Apu<'a> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:370:54
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 370 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<dyn Memory + 'a>>>) {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:245:54
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<Memory + 'a>>>) {
[INFO] [stdout]     |                                                      ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn set_memory(&mut self, mem: Rc<RefCell<Box<dyn Memory + 'a>>>) {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cpu/mod.rs:48:61
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn new(tv_system: &TvSystem, memory: Rc<RefCell<Box<dyn Memory + 'a>>>) -> Cpu<'a> {
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<Renderer + 'a>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 118 |         renderer: Box<dyn Renderer + 'a>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 121 |         rom: Rc<RefCell<Box<dyn Memory>>>) -> Ppu<'a> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ppu/vram.rs:15:58
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new(mirroring: Mirroring, rom: Rc<RefCell<Box<dyn Memory>>>) -> Vram {
[INFO] [stdout]    |                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 57 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/memory/mod.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for Memory {
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl fmt::Debug for dyn Memory {
[INFO] [stdout]   |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:64:36
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<Memory>>>,
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub fn new(rom: Rc<RefCell<Box<dyn Memory>>>,
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/console/mod.rs:94:51
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<Memory>));
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let rom_mem = Rc::new(RefCell::new(rom as Box<dyn Memory>));
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/console/mod.rs:118:18
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<Memory>));
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 118 |         ) as Box<dyn Memory>));
[INFO] [stdout]     |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/dmc_channel.rs:299:52
[INFO] [stdout]     |
[INFO] [stdout] 299 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 299 |                 Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/apu/mod.rs:447:52
[INFO] [stdout]     |
[INFO] [stdout] 447 |                 Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                    ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 447 |                 Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]     --> src/cpu/mod.rs:2193:78
[INFO] [stdout]      |
[INFO] [stdout] 2193 |         let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]      |                                                                              ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]      |
[INFO] [stdout] 2193 |         let memory = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]      |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/vram.rs:131:75
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]     |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ppu/mod.rs:829:75
[INFO] [stdout]     |
[INFO] [stdout] 829 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 829 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]     |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/memory_bus/mod.rs:70:46
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<Memory>,
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 |             ram: Box::new(Ram::new()) as Box<dyn Memory>,
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/memory_bus/mod.rs:146:75
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<Memory>));
[INFO] [stdout]     |                                                                           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 146 |         let rom = Rc::new(RefCell::new(Box::new(MockMemory::new()) as Box<dyn Memory>));
[INFO] [stdout]     |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/console/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 |         .unwrap_or_else(|e| panic!("Failed to initialize SDL context"));
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `consumed_time`
[INFO] [stdout]    --> src/console/mod.rs:173:17
[INFO] [stdout]     |
[INFO] [stdout] 173 |             let consumed_time = time::precise_time_ns() - current_time;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_consumed_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timer_low_bits`
[INFO] [stdout]   --> src/apu/pulse_channel.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let timer_low_bits = value;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/apu/triangle_channel.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut channel = create_test_channel();
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_buf`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]   --> src/apu/dmc_channel.rs:71:43
[INFO] [stdout]    |
[INFO] [stdout] 71 |             let new_buf = if let Some(ref memory) = self.memory {
[INFO] [stdout]    |                                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enabled`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:139:46
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn cycle(&mut self, reader: &mut Reader, enabled: bool) {
[INFO] [stdout]     |                                              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:286:28
[INFO] [stdout]     |
[INFO] [stdout] 286 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:290:29
[INFO] [stdout]     |
[INFO] [stdout] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:290:43
[INFO] [stdout]     |
[INFO] [stdout] 290 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/apu/sweep.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut sweep = (base >> self.shift) as i16;
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/apu/mod.rs:413:29
[INFO] [stdout]     |
[INFO] [stdout] 413 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/mod.rs:431:28
[INFO] [stdout]     |
[INFO] [stdout] 431 |         fn read(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/apu/mod.rs:435:29
[INFO] [stdout]     |
[INFO] [stdout] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/apu/mod.rs:435:43
[INFO] [stdout]     |
[INFO] [stdout] 435 |         fn write(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2132:13
[INFO] [stdout]      |
[INFO] [stdout] 2132 |         let mut divisor:u8;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2133:13
[INFO] [stdout]      |
[INFO] [stdout] 2133 |         let mut color_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/cpu/mod.rs:2134:13
[INFO] [stdout]      |
[INFO] [stdout] 2134 |         let mut master_freq:f64;
[INFO] [stdout]      |             ----^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixels`
[INFO] [stdout]    --> src/ppu/mod.rs:823:30
[INFO] [stdout]     |
[INFO] [stdout] 823 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixels`
[INFO] [stdout]    --> src/memory_bus/mod.rs:105:30
[INFO] [stdout]     |
[INFO] [stdout] 105 |         fn render(&mut self, pixels: &Vec<Pixel>) {
[INFO] [stdout]     |                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pixels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/memory_bus/mod.rs:168:29
[INFO] [stdout]     |
[INFO] [stdout] 168 |         fn queue(&mut self, slice: &[f32]) {
[INFO] [stdout]     |                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAL_RATE` is never used
[INFO] [stdout]   --> src/apu/noise_channel.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static PAL_RATE: [u16; 16] = [
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAL_RATE` is never used
[INFO] [stdout]   --> src/apu/dmc_channel.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static PAL_RATE : [u16; 16] = [
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `color_subcarrier_frequency`, `master_clock_frequency`, and `clock_divisor` are never read
[INFO] [stdout]     --> src/cpu/mod.rs:2122:5
[INFO] [stdout]      |
[INFO] [stdout] 2121 | pub struct Frequency {
[INFO] [stdout]      |            --------- fields in this struct
[INFO] [stdout] 2122 |     color_subcarrier_frequency: f64,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 2123 |     master_clock_frequency: f64,
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 2124 |     clock_divisor: u8,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Frequency` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `oam_dma` is never read
[INFO] [stdout]    --> src/ppu/mod.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 762 | struct Registers {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 767 |     oam_dma: u8,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Registers` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_to_0x400B_loads_length_counter` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn writing_to_0x400B_loads_length_counter() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_loads_length_counter`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_to_0x400B_sets_linear_counter_reload_flag` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 |     fn writing_to_0x400B_sets_linear_counter_reload_flag() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_to_0x400_b_sets_linear_counter_reload_flag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x400A_sets_timer_low_bits` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 |     fn write_to_0x400A_sets_timer_low_bits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_a_sets_timer_low_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x400B_sets_timer_high_bits` should have a snake case name
[INFO] [stdout]    --> src/apu/triangle_channel.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 |     fn write_to_0x400B_sets_timer_high_bits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x400_b_sets_timer_high_bits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:318:27
[INFO] [stdout]     |
[INFO] [stdout] 318 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout]     = note: `#[deny(overflowing_literals)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:333:27
[INFO] [stdout]     |
[INFO] [stdout] 333 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:355:27
[INFO] [stdout]     |
[INFO] [stdout] 355 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:368:27
[INFO] [stdout]     |
[INFO] [stdout] 368 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:382:27
[INFO] [stdout]     |
[INFO] [stdout] 382 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:394:27
[INFO] [stdout]     |
[INFO] [stdout] 394 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:411:27
[INFO] [stdout]     |
[INFO] [stdout] 411 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:422:27
[INFO] [stdout]     |
[INFO] [stdout] 422 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:434:27
[INFO] [stdout]     |
[INFO] [stdout] 434 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:450:27
[INFO] [stdout]     |
[INFO] [stdout] 450 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:463:27
[INFO] [stdout]     |
[INFO] [stdout] 463 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:476:27
[INFO] [stdout]     |
[INFO] [stdout] 476 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:490:27
[INFO] [stdout]     |
[INFO] [stdout] 490 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:506:27
[INFO] [stdout]     |
[INFO] [stdout] 506 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:525:27
[INFO] [stdout]     |
[INFO] [stdout] 525 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/dmc_channel.rs:536:27
[INFO] [stdout]     |
[INFO] [stdout] 536 |         dmc.write(0x4012, 0x100); // random mem address, not used here
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/mod.rs:464:27
[INFO] [stdout]     |
[INFO] [stdout] 464 |         apu.write(0x4012, 0x100);
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]    --> src/apu/mod.rs:495:27
[INFO] [stdout]     |
[INFO] [stdout] 495 |         apu.write(0x4012, 0x100);
[INFO] [stdout]     |                           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the literal `0x100` (decimal `256`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]     = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:799:8
[INFO] [stdout]     |
[INFO] [stdout] 799 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_1_envelope() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_1_envelope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:836:8
[INFO] [stdout]     |
[INFO] [stdout] 836 |     fn writing_0x00_into_0x4017_should_not_clock_pulse_channeL_2_envelope() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x00_into_0x4017_should_not_clock_pulse_channe_l_2_envelope`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `writing_0xC0_into_0x4017_should_clear_frame_interrupt` should have a snake case name
[INFO] [stdout]    --> src/apu/mod.rs:974:8
[INFO] [stdout]     |
[INFO] [stdout] 974 |     fn writing_0xC0_into_0x4017_should_clear_frame_interrupt() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `writing_0x_c0_into_0x4017_should_clear_frame_interrupt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]     --> src/cpu/mod.rs:6924:28
[INFO] [stdout]      |
[INFO] [stdout] 6924 |         cpu.status_flags = 0x103;
[INFO] [stdout]      |                            ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the literal `0x103` (decimal `259`) does not fit into the type `u8` and will become `3u8`
[INFO] [stdout]      = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn write_to_0x1FFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x1FFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 |     fn read_from_0x1FFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x1_fff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vram_address_0x3EFF_mirrors_to_0x2EFF` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 |     fn vram_address_0x3EFF_mirrors_to_0x2EFF() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `vram_address_0x3_eff_mirrors_to_0x2_eff`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:378:8
[INFO] [stdout]     |
[INFO] [stdout] 378 |     fn write_to_vram_address_0x3F00_writes_to_beginning_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f00_writes_to_beginning_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:386:8
[INFO] [stdout]     |
[INFO] [stdout] 386 |     fn read_from_vram_address_0x3F00_reads_from_beginning_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f00_reads_from_beginning_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:393:8
[INFO] [stdout]     |
[INFO] [stdout] 393 |     fn write_to_vram_address_0x3F1F_writes_to_end_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_f_writes_to_end_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 |     fn read_from_vram_address_0x3F1F_reads_from_end_of_palette_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_f_reads_from_end_of_palette_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:408:8
[INFO] [stdout]     |
[INFO] [stdout] 408 |     fn write_to_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F10_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:415:8
[INFO] [stdout]     |
[INFO] [stdout] 415 |     fn read_from_vram_address_0x3F10_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f10_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:422:8
[INFO] [stdout]     |
[INFO] [stdout] 422 |     fn write_to_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F14_is_mirrored_to_0x3F04` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:429:8
[INFO] [stdout]     |
[INFO] [stdout] 429 |     fn read_from_vram_address_0x3F14_is_mirrored_to_0x3F04() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f14_is_mirrored_to_0x3_f04`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:437:8
[INFO] [stdout]     |
[INFO] [stdout] 437 |     fn write_to_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F18_is_mirrored_to_0x3F08` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 444 |     fn read_from_vram_address_0x3F18_is_mirrored_to_0x3F08() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f18_is_mirrored_to_0x3_f08`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:451:8
[INFO] [stdout]     |
[INFO] [stdout] 451 |     fn write_to_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:458:8
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn read_from_vram_address_0x3F1C_is_mirrored_to_0x3F0C() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f1_c_is_mirrored_to_0x3_f0_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:466:8
[INFO] [stdout]     |
[INFO] [stdout] 466 |     fn write_to_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F20_is_mirrored_to_0x3F00` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:473:8
[INFO] [stdout]     |
[INFO] [stdout] 473 |     fn read_from_vram_address_0x3F20_is_mirrored_to_0x3F00() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f20_is_mirrored_to_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:480:8
[INFO] [stdout]     |
[INFO] [stdout] 480 |     fn write_to_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:487:8
[INFO] [stdout]     |
[INFO] [stdout] 487 |     fn read_from_vram_address_0x3FFF_is_mirrored_to_0x3F1F() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_fff_is_mirrored_to_0x3_f1_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:494:8
[INFO] [stdout]     |
[INFO] [stdout] 494 |     fn write_to_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_vram_address_0x3F45_is_mirrored_to_0x3F05` should have a snake case name
[INFO] [stdout]    --> src/ppu/vram.rs:501:8
[INFO] [stdout]     |
[INFO] [stdout] 501 |     fn read_from_vram_address_0x3F45_is_mirrored_to_0x3F05() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_vram_address_0x3_f45_is_mirrored_to_0x3_f05`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/ppu/renderer.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |         self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let _ = self.canvas.copy(&self.texture, None, Rect::new(0, 0, 256*2, 240*2));
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1076:8
[INFO] [stdout]      |
[INFO] [stdout] 1076 |     fn read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_vram_read_buffer_value_when_reading_below_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1085:8
[INFO] [stdout]      |
[INFO] [stdout] 1085 |     fn read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_updates_read_buffer_to_value_at_current_address_when_reading_below_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1095:8
[INFO] [stdout]      |
[INFO] [stdout] 1095 |     fn read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3F00() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x2007_returns_data_straight_from_vram_skipping_read_buffer_when_reading_at_or_above_0x3_f00`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: literal out of range for `u8`
[INFO] [stdout]     --> src/ppu/mod.rs:1108:32
[INFO] [stdout]      |
[INFO] [stdout] 1108 |         ppu.vram.write(0x3F00, 0x200);
[INFO] [stdout]      |                                ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: the literal `0x200` (decimal `512`) does not fit into the type `u8` and will become `0u8`
[INFO] [stdout]      = help: consider using the type `u16` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_address_0x200A_is_mirrored_to_status_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1158:8
[INFO] [stdout]      |
[INFO] [stdout] 1158 |     fn read_from_address_0x200A_is_mirrored_to_status_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_0x200_a_is_mirrored_to_status_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1165:8
[INFO] [stdout]      |
[INFO] [stdout] 1165 |     fn write_to_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1172:8
[INFO] [stdout]      |
[INFO] [stdout] 1172 |     fn read_from_address_between_0x2008_and_0x3FFF_is_mirrored_correctly() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_address_between_0x2008_and_0x3_fff_is_mirrored_correctly`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x3FFF_writes_to_ppu_data_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1181:8
[INFO] [stdout]      |
[INFO] [stdout] 1181 |     fn write_to_0x3FFF_writes_to_ppu_data_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x3_fff_writes_to_ppu_data_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_0x3FFF_reads_from_ppu_data_register` should have a snake case name
[INFO] [stdout]     --> src/ppu/mod.rs:1189:8
[INFO] [stdout]      |
[INFO] [stdout] 1189 |     fn read_from_0x3FFF_reads_from_ppu_data_register() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_0x3_fff_reads_from_ppu_data_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0x1FFF_is_redirected_to_ram` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 |     fn write_to_0x1FFF_is_redirected_to_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x1_fff_is_redirected_to_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_at_0x1FFF_is_read_from_ram` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 |     fn read_at_0x1FFF_is_read_from_ram() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x1_fff_is_read_from_ram`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_to_0xFFFF_is_redirected_to_rom` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 |     fn write_to_0xFFFF_is_redirected_to_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_to_0x_ffff_is_redirected_to_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_at_0xFFFF_is_read_from_rom` should have a snake case name
[INFO] [stdout]    --> src/memory_bus/mod.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 |     fn read_at_0xFFFF_is_read_from_rom() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_at_0x_ffff_is_read_from_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stdout]   --> src/ram/mod.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 |     fn read_from_above_0x1FFF_panics() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `read_from_above_0x1_fff_panics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_from_above_0x1FFF_panics` should have a snake case name
[INFO] [stdout]    --> src/ram/mod.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn write_from_above_0x1FFF_panics() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `write_from_above_0x1_fff_panics`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 20 previous errors; 121 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `nes` (bin "nes" test) due to 21 previous errors; 121 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "86541387c0333fe2027e0799807e0b66666f01754beed3d19fd986731b122bf1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "86541387c0333fe2027e0799807e0b66666f01754beed3d19fd986731b122bf1", kill_on_drop: false }`
[INFO] [stdout] 86541387c0333fe2027e0799807e0b66666f01754beed3d19fd986731b122bf1
